unit uSAF0031_03;

interface

uses
   Windows,
   Messages,
   SysUtils,
   Variants,
   Classes,
   Graphics,
   Controls,
   Forms,
   Dialogs,
   ComCtrls,
   Menus,
   ActnList,
   ExtCtrls,
   DB,
   ADODB,
   DBCtrls,
   StdCtrls,
   WideStrings,
   FMTBcd,
   ImgList,
   ToolWin,
   Mask;

type
   TfrmInsUpd = class(TForm)
      pnlCentro: TPanel;
      actInsUpd: TActionList;
      actInsUpdSalvar: TAction;
      actInsUpdFechar: TAction;
      ilInsUpd: TImageList;
      dsTabela: TDataSource;
      lblDESCRICAO: TLabel;
      edtDESCRICAO: TDBEdit;
      pnlInferior: TPanel;
      tlbInsUpd: TToolBar;
      btnSalvar: TToolButton;
      btnS1: TToolButton;
      btnFechar: TToolButton;
      dbnvgrLista: TDBNavigator;
      statPrincipal: TStatusBar;
      mmDETALHE_BANCARIO: TDBMemo;
      lblOBS: TLabel;
      lblDados: TLabel;
      mmDETALHE_BANCARIO_ING: TDBMemo;
      lblOBS_ING: TLabel;
      lblDadosIng: TLabel;

      procedure FormShow(Sender: TObject);

      procedure FormKeyPress(Sender: TObject; var Key: Char);
      procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

      procedure actInsUpdSalvarExecute(Sender: TObject);
      procedure actInsUpdFecharExecute(Sender: TObject);
      procedure dsTabelaStateChange(Sender: TObject);
      procedure lblDadosClick(Sender: TObject);
      procedure mmDETALHE_BANCARIO_INGExit(Sender: TObject);
      procedure lblDadosIngClick(Sender: TObject);

   private

   const
      CLIENTE_CONSULTA =
         'SELECT' +
         ' SAF0102.RAZAO,' +
         ' SAF0102.CNPJ,' +
         ' SAF0015.DESCRICAO AS LOGRAD_TIPO,' +
         ' SAF0020.LOGRADOURO,' +
         ' SAF0020.NUMERO,' +
         ' SAF0020.COMPLEMENTO,' +
         ' SAF0020.BAIRRO,' +
         ' SAF0020.CIDADE,' +
         ' SAF0020.ESTADO,' +
         ' SAF0020.CPOSTAL' +
         '' +
         ' FROM SAF0102' +
         '' +
         ' JOIN SAF0020 ON (SAF0020.ID_CLIENTE = SAF0102.ID_CLIENTE)' +
         ' JOIN SAF0015 ON (SAF0015.ID_TIPO_LOGRAD = SAF0020.ID_TIPO_LOGRAD)';

      { Private declarations }

      public

      _INSUPD_TIPO: Integer;
      _INSUPD_ID: Integer;

      { Public declarations }

   end;

var
   frmInsUpd: TfrmInsUpd;

implementation

{$R *.dfm}

uses
   uLibGlobal,
   uSAF0031_01;

procedure TfrmInsUpd.actInsUpdFecharExecute(Sender: TObject);
begin
   if (DMDados.tblTabela.State in [dsInsert, dsEdit]) then
   begin
      DMDados.tblTabela.Cancel;
   end;

   Self.Close;
end;

procedure TfrmInsUpd.actInsUpdSalvarExecute(Sender: TObject);
var
   chaveID: integer;
begin
   if (DMDados.tblTabela.State in [dsInsert, dsEdit]) then
   begin
      if Application.MessageBox(
         PChar('DESEJA REALMENTE SALVAR O REGISTRO ?'),
         PChar(Application.Title),
         MB_YESNO + MB_ICONQUESTION) = IDYES then
      begin
         DMDados.tblTabela.FieldByName('ID_CLIENTE').AsInteger := DMDados._TIPO_CHAVE;

         DMDados.tblTabela.Post;

         fAtualizaDS(DMDados.qryLista);

         actInsUpdFecharExecute(Sender);
      end;
   end;
end;

procedure TfrmInsUpd.dsTabelaStateChange(Sender: TObject);
begin
   dbnvgrLista.Enabled := not (dsTabela.State in [dsInsert, dsEdit]);

   edtDESCRICAO.Enabled := (dsTabela.State in [dsInsert, dsEdit]);

   lblDados.Enabled := (dsTabela.State in [dsInsert, dsEdit]);
   mmDETALHE_BANCARIO.Enabled := (dsTabela.State in [dsInsert, dsEdit]);

   lblDadosIng.Enabled := (dsTabela.State in [dsInsert, dsEdit]);
   mmDETALHE_BANCARIO_ING.Enabled := (dsTabela.State in [dsInsert, dsEdit]);

   actInsUpdSalvar.Enabled := (dsTabela.State in [dsInsert, dsEdit]);
end;

procedure TfrmInsUpd.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
   fNotCtrlDelete(Key, Shift);
end;

procedure TfrmInsUpd.FormKeyPress(Sender: TObject; var Key: Char);
begin
   fTabToEnter(Key, Self);
end;

procedure TfrmInsUpd.FormShow(Sender: TObject);
begin
   fMontarTelaInsUpd(Self, 600, 550);

   fAtualizaDS(DMDados.tblTabela);

   case _INSUPD_TIPO of
      0: //INSERIR
         begin
            Self.Caption := DMDados._sistemaNome + ' - INSERIR REGISTRO';

            DMDados.tblTabela.Insert;
         end;

      1: //EDITAR
         begin
            Self.Caption := DMDados._sistemaNome + ' - ALTERAR REGISTRO';

            DMDados.tblTabela.Locate(
               DMDados._TIPO_CAMPO,
               _INSUPD_ID, [loCaseInsensitive, loPartialKey]);

            DMDados.tblTabela.Edit;
         end;

      2: //CONSULTAR
         begin
            Self.Caption := DMDados._sistemaNome + ' - CONSULTAR REGISTRO';

            DMDados.tblTabela.Locate(
               DMDados._TIPO_CAMPO,
               _INSUPD_ID, [loCaseInsensitive, loPartialKey]);
         end;
   end;
end;

procedure TfrmInsUpd.lblDadosIngClick(Sender: TObject);
var
   vCampoId: string;
   vChave: string;

   clienteRazao: string;
   clienteCNPJ: string;
   clienteLogradTipo: string;
   clienteLogradouro: string;
   clienteNumero: string;
   clienteComplemento: string;
   clienteBairro: string;
   clienteCidade: string;
   clienteEstado: string;
   clienteCPostal: string;
begin
   vCampoId := 'SAF0102.ID_CLIENTE';
   vChave := IntToStr(DMDados._TIPO_CHAVE);

   _instrucaoSQL :=
      CLIENTE_CONSULTA +
      ' WHERE ' + vCampoId + ' = ' + vChave;

   fRetornaSQLADO2(DMDados.qryAuxiliar, _instrucaoSQL);

   clienteRazao := DMDados.qryAuxiliar.Fields[0].AsString;
   clienteCNPJ := DMDados.qryAuxiliar.Fields[1].AsString;
   clienteLogradTipo := DMDados.qryAuxiliar.Fields[2].AsString;
   clienteLogradouro := DMDados.qryAuxiliar.Fields[3].AsString;
   clienteNumero := DMDados.qryAuxiliar.Fields[4].AsString;
   clienteComplemento := DMDados.qryAuxiliar.Fields[5].AsString;
   clienteBairro := DMDados.qryAuxiliar.Fields[6].AsString;
   clienteCidade := DMDados.qryAuxiliar.Fields[7].AsString;
   clienteEstado := DMDados.qryAuxiliar.Fields[8].AsString;
   clienteCPostal := DMDados.qryAuxiliar.Fields[9].AsString;

   DMDados.qryAuxiliar.Close;

   DMDados.tblTabela.FieldByName('DETALHE_BANCARIO_ING').AsString :=
      clienteRazao + #13#10 +
      'CNPJ: ' + clienteCNPJ + #13#10 +
      clienteLogradTipo + ' ' + clienteLogradouro + ', ' + clienteNumero + ' ' + clienteComplemento + #13#10 +
      clienteCPostal + ' ' + clienteBairro + ' - ' + clienteCidade + ' - ' + clienteEstado;
end;

procedure TfrmInsUpd.lblDadosClick(Sender: TObject);
var
   vCampoId: string;
   vChave: string;

   clienteRazao: string;
   clienteCNPJ: string;
   clienteLogradTipo: string;
   clienteLogradouro: string;
   clienteNumero: string;
   clienteComplemento: string;
   clienteBairro: string;
   clienteCidade: string;
   clienteEstado: string;
   clienteCPostal: string;
begin
   vCampoId := 'SAF0102.ID_CLIENTE';
   vChave := IntToStr(DMDados._TIPO_CHAVE);

   _instrucaoSQL :=
      CLIENTE_CONSULTA +
      ' WHERE ' + vCampoId + ' = ' + vChave;

   fRetornaSQLADO2(DMDados.qryAuxiliar, _instrucaoSQL);

   clienteRazao := DMDados.qryAuxiliar.Fields[0].AsString;
   clienteCNPJ := DMDados.qryAuxiliar.Fields[1].AsString;
   clienteLogradTipo := DMDados.qryAuxiliar.Fields[2].AsString;
   clienteLogradouro := DMDados.qryAuxiliar.Fields[3].AsString;
   clienteNumero := DMDados.qryAuxiliar.Fields[4].AsString;
   clienteComplemento := DMDados.qryAuxiliar.Fields[5].AsString;
   clienteBairro := DMDados.qryAuxiliar.Fields[6].AsString;
   clienteCidade := DMDados.qryAuxiliar.Fields[7].AsString;
   clienteEstado := DMDados.qryAuxiliar.Fields[8].AsString;
   clienteCPostal := DMDados.qryAuxiliar.Fields[9].AsString;

   DMDados.qryAuxiliar.Close;

   DMDados.tblTabela.FieldByName('DETALHE_BANCARIO').AsString :=
      clienteRazao + #13#10 +
      'CNPJ: ' + clienteCNPJ + #13#10 +
      clienteLogradTipo + ' ' + clienteLogradouro + ', ' + clienteNumero + ' ' + clienteComplemento + #13#10 +
      clienteCPostal + ' ' + clienteBairro + ' - ' + clienteCidade + ' - ' + clienteEstado;
end;

procedure TfrmInsUpd.mmDETALHE_BANCARIO_INGExit(Sender: TObject);
begin
   actInsUpdSalvarExecute(Sender);
end;

end.

